//
// Created by lovep on 2025/3/28.
//

#ifndef SQSTACK_H
#define SQSTACK_H

#include "defination.h"

#define STACK_INIT_SIZE 100

typedef struct {
    SElemType *base; //栈的存储空间基地址（栈底指针）
    SElemType *top; //指示栈顶元素的下一存储单元的位置（栈顶指针）
    int stacksize; //栈当前的存储空间容量
} SqStack;

//创建一个空的顺序栈S
Status SqStack_Init(SqStack &S);

//入栈：在顺序栈S中插入新的元素e，使其成为新的栈顶元素
Status SqStack_Push(SqStack &S,SElemType e);

//出栈：删除顺序栈S中的栈顶数据元素，并用e返回其值
Status SqStack_Pop(SqStack &S,SElemType &e);

//取顺序栈S中栈顶元素的值，并用e返回其值
Status SqStack_GetTop(SqStack S,SElemType &e);

//判断顺序栈S是否为空，如果为空栈，返回TRUE，否则返回FALSE
Status SqStack_StackEmpty(SqStack S);

//销毁顺序栈S
Status SqStack_Destroy(SqStack &S);

//清空顺序栈S
Status SqStack_Clear(SqStack &S);

//显示
Status SqStack_Display(SqStack S);


#endif //SQSTACK_H
